Simulating the software behaviors reflected by a model is an important means in the software testing field. Software testing and verification is the most fundamental and important means for ensuring software correctness and improving software reliability, as well as a mainstream approach employed in the industry. As the object oriented software development technique is applied widely and a demand for software testing automation emerges, model based software testing has received more and more attention gradually. Model based software testing belongs to the category of protocol based software testing, and is characterized in: both the test case generation and the test result evaluation are carried out on the basis of the model and derived model of the tested application program (usually referred to as test model). A software model is abstract description of software behaviors and software structure. Software behaviors can be described by system input sequence, activities, conditions, output logic or data flow.
Model based tests are a sort of automated tests, such tests are based on the model, in which a large number of test cases for a tested system are generated automatically as a group in one run. A model is an abstract that describes the behaviors of a tested system in an aspect. In a model based testing approach, firstly, modeling is carried out for a system according to the system requirement and functional specification; then, test cases are generated automatically on the basis of the model; finally, a verification process is executed. Model based testing can bring the following benefits: the schedule can be shortened, the cost can be reduced, the quality can be improved, a model of user behaviors can be obtained, the communication between the developer and the tester can be improved, ambiguous factors in the specification and design can be dug out as early as possible, tests can be generated and executed automatically, and changes to the testing kit incurred by requirement changes can be reduced.
A hybrid execution approach is an approach that incorporates symbolic execution and actual execution. Symbolic execution refers to substituting actual variables with symbolic variables and simulating program execution to carry out relevant analysis without actual program execution, and is usually used in conjunction with solution of a constraint satisfaction problem. Actual execution refers to inputting specific variable values into the program to drive normal execution of the program. A hybrid execution approach is a hybrid software program verification approach in which actual execution and symbolic execution are carried out in alternate way for a program.